#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
    pid_t id = fork();
    if (id < 0)
    {
        // 生成子进程失败，fork返回-1
        perror("fork");
        return 1;
    }
    else if (id == 0)
    {
        // 在子进程中，fork返回0，因为无需返回任何值
        // 每个父进程或许有很多子进程，但每个子进程只有一个父进程
        while (1)
        {
            printf("我是一个子进程，我的pid是：%d，我的父进程的pid是：%d\n", getpid(), getppid());
            sleep(1);
        }
    }
    else
    {
        // 在父进程中，fork生成成功会返回子进程的pid，一定是大于0的
        while (1)
        {
            printf("我是一个父进程，我的pid是：%d，我的父进程的pid是：%d\n", getpid(), getppid());
            sleep(1);
        }
    }
    
    return 0;
}
